#!/bin/bash
set -euo pipefail
BaseDir=$(cd "$(dirname "$0")"; pwd)
cd ${BaseDir}

# pip3 install --user pipenv 安装的目录
[ -d ~/.local ] &&{
    rm -rf ~/.local/bin
    rm -rf ~/.local/lib
    rm -rf ~/.local/share
}

act_version=$(python --version|awk '{print $2}')
echo "当前激活的python版本: $act_version"

version=$(/usr/bin/python3 --version|awk '{print $2}')
echo "OS内置的版本 Python version : ${version}"

echo "install pipenv..."
if [ "$act_version" != "$version" ]; then
    read -p "Use $act_version(y/n)"
    if [ "$REPLY" = "n" ]; then
        echo "使用$version"
        /usr/local/bin/pip3 install --user pipenv
    else
        echo "使用$act_version"
        pip3 install --user pipenv

        version=$act_version
    fi
else
    echo "使用$act_version=$version"
    pip3 install --user pipenv
fi

# 重建的venv时删除旧的
[ -d .venv ] && {
    ~/.local/bin/pipenv --rm
    echo "Pipfile Pipfile.lock"
    rm ./Pipfile*
}


export PATH=$PATH:~/.local/bin/
#当前项目目录下建立 .venv 的隔离环境的目录，不设置这个则是全局的
export PIPENV_VENV_IN_PROJECT=1
pipenv install --python ${version}
# python-dotenv，那么在使用flask run或其他命令时会使用它自动从.flaskenv文件和.env文件中加载环境变量
pipenv install python-dotenv
~/.local/bin/pipenv graph

cat <<EOF
或者PATH中不包含，直接执行 ~/.local/bin/pipenv
# 可以使用pipenv shell命令显式地激活虚拟环境：
~/.local/bin/pipenv shell
# pipenv run命令，这个命令允许你不显式激活虚拟环境即可在当前项目的虚拟环境中执行命令
~/.local/bin/pipenv run app.py ...
# pipenv graph 命令查看当前环境下的依赖情况，或是在虚拟环境中使用pip list命令查看依赖列表。
~/.local/bin/pipenv graph
# pipenv run flask run命令启动开发服务器
# pipenv install watchdog --dev 因为这个包只在开发时才会用到，所以我们在安装命令后添加了一个--dev选项，这用来把这个包声明为开发依赖
EOF

echo "done"